package com.nf.ch03.test06.three;

/**
 * @author lwj
 * @date 2025-03-04
 * @vesion 1.0.0
 */
public class MainTest {
    public static void main(String[] args) {
        /*
        * 三、使用面向对象的思想，编写程序，实现用户开门和关门的操作,
            需求如下，

            门->有两个行为：开和关
                铁门
                木门
                防盗门->防盗(响铃)


            用户->开门、关门

            小偷偷盗 -> 实现小偷根据自己的运气来判断是否偷次成功

            汽车->防盗(响铃)


            增加需求：
                增加铁玉门和桃木门，它们都可以辟邪。同时铁玉门还应具有防盗功能

                天师->可以使用带辟邪功能的工具进行捉妖 -- 天师关注点在于，工具是否具有辟邪的功能
        * */

        // 创建门
        Door ironGate = new IronGate("铁门");
        Door treeDoor = new TreeDoor("木门");
        Door securityDoor = new SecurityDoor("铁门");
        Door thm = new TaoMuDoor("桃花门");
        Door tym = new TieYuDoor("铁玉门");

        // 创建对象
        User user = new User("李进峰");
        Thief thief = new Thief("小偷");
        TianShi ts = new TianShi("天师");

        // 测试门
        user.openDoor(treeDoor);
        user.closeDoor(treeDoor);

        // 打开响铃的铁门
        thief.openDoor(securityDoor);
        thief.openDoor(treeDoor);

        // 判断天师手上的工具是否能辟邪
        ts.exorcise(treeDoor);
        ts.exorcise(thm);
    }
}
